import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

/* Layout */
import Layout from '@/layout'

/* Router Modules */
import componentsRouter from './modules/components'
import chartsRouter from './modules/charts'
import tableRouter from './modules/table'
import nestedRouter from './modules/nested'

/**
 * Note: sub-menu only appear when route children.length >= 1
 * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html
 *
 * hidden: true                   if set true, item will not show in the sidebar(default is false)
 * alwaysShow: true               if set true, will always show the root menu
 *                                if not set alwaysShow, when item has more than one children route,
 *                                it will becomes nested mode, otherwise not show the root menu
 * redirect: noRedirect           if set noRedirect will no redirect in the breadcrumb
 * name:'router-name'             the name is used by <keep-alive> (must set!!!)
 * meta : {
    roles: ['admin','editor']    control the page roles (you can set multiple roles)
    title: 'title'               the name show in sidebar and breadcrumb (recommend set)
    icon: 'svg-name'/'el-icon-x' the icon show in the sidebar
    noCache: true                if set true, the page will no be cached(default is false)
    affix: true                  if set true, the tag will affix in the tags-view
    breadcrumb: false            if set false, the item will hidden in breadcrumb(default is true)
    activeMenu: '/example/list'  if set path, the sidebar will highlight the path you set
  }
 */

/**
 * constantRoutes
 * a base page that does not have permission requirements
 * all roles can be accessed
 */
export const constantRoutes = [{
        path: '/redirect',
        component: Layout,
        hidden: true,
        children: [{
            path: '/redirect/:path(.*)',
            component: () =>
                import ('@/views/redirect/index')
        }]
    },
    {
        path: '/login',
        component: () =>
            import ('@/views/login/index'),
        hidden: true
    },
    {
        path: '/auth-redirect',
        component: () =>
            import ('@/views/login/auth-redirect'),
        hidden: true
    },
    {
        path: '/404',
        component: () =>
            import ('@/views/error-page/404'),
        hidden: true
    },
    {
        path: '/401',
        component: () =>
            import ('@/views/error-page/401'),
        hidden: true
    },
    {
        path: '/',
        component: Layout,
        redirect: '/dashboard',
        children: [{
            path: 'dashboard',
            component: () =>
                import ('@/views/dashboard/index'),
            name: 'Dashboard',
            meta: {
                title: '深圳节能在线', //政府首页
                icon: 'dashboard',
                affix: true
            }
        }]
    }
    // {
    //     path: '/documentation',
    //     component: Layout,
    //     children: [{
    //         path: 'index',
    //         component: () =>
    //             import ('@/views/documentation/index'),
    //         name: 'Documentation',
    //         meta: { title: 'documentation', icon: 'documentation', affix: true }
    //     }]
    // },
    // {
    //     path: '/guide',
    //     component: Layout,
    //     redirect: '/guide/index',
    //     children: [{
    //         path: 'index',
    //         component: () =>
    //             import ('@/views/guide/index'),
    //         name: 'Guide',
    //         meta: { title: 'guide', icon: 'guide', noCache: true }
    //     }]
    // },
    // {
    //     path: '/profile',
    //     component: Layout,
    //     redirect: '/profile/index',
    //     hidden: true,
    //     children: [{
    //         path: 'index',
    //         component: () =>
    //             import ('@/views/profile/index'),
    //         name: 'Profile',
    //         meta: { title: 'profile', icon: 'user', noCache: true }
    //     }]
    // }
]

/**
 * asyncRoutes
 * the routes that need to be dynamically loaded based on user roles
 */
export const asyncRoutes = [{
        path: '/encenter',
        component: Layout,
        redirect: '/encenter/index',
        alwaysShow: true, // will always show the root menu
        name: 'Permission',
        meta: {
            title: '能管中心',
            icon: 'el-icon-odometer',
            permission: {
                module_code: "",
                resource_code: "",
                operate_code: ""

            },
            accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
        },
        children: [{
                path: 'index',
                component: () =>
                    import ('@/views/permission/page'),
                name: 'EmCenterIndex',
                meta: {
                    title: '首页',
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    }
                }
            },
            {
                path: 'online',
                component: () =>
                    import ('@/views/permission/directive'),
                name: 'EmCenterOnline',
                meta: {
                    title: '在线监测',
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: ['ent'] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            },
            {
                path: 'task',
                component: () =>
                    import ('@/views/permission/role'),
                name: 'EmCenterTask',
                meta: {
                    title: '任务管理',
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    }
                }
            },
            {
                path: 'mater',
                component: () =>
                    import ('@/views/permission/role'),
                name: 'EmCenterMater',
                meta: {
                    title: '仪表配置管理',
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    }
                }
            },
            {
                path: 'materrecord',
                component: () =>
                    import ('@/views/permission/role'),
                name: 'EmCenterMaterRecord',
                meta: {
                    title: '仪表数据管理',
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    }
                }
            },
            {
                path: 'entapi',
                component: () =>
                    import ('@/views/permission/role'),
                name: 'EmCenterEntApi',
                meta: {
                    title: '企业对接API',
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    }
                }
            }
        ]
    },

    {
        path: '/ecaudit',
        component: Layout,
        redirect: '/ecaudit/index',
        alwaysShow: true, // will always show the root menu
        name: 'EcAudit',
        meta: {
            title: '能源审计',
            icon: 'el-icon-s-check',
            permission: {
                module_code: "",
                resource_code: "",
                operate_code: ""

            },
            accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
        },
        children: [{
                path: 'index',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'EcAuditIndex',
                meta: {
                    title: '首页',
                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            },
            {
                path: 'task',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'EcAuditTask',
                meta: {
                    title: '能源审计任务',
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            },
            {
                path: 'audit',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'EcAuditAudit',
                meta: {
                    title: '能源审计',

                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            },
            {
                path: 'project',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'EcAuditProject',
                meta: {
                    title: '节能项目',
                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            }
        ]
    },
    {
        path: '/asassess',
        component: Layout,
        redirect: '/asassess/index',
        alwaysShow: true, // will always show the root menu
        name: 'AsAssess',
        meta: {
            title: '节能考核',
            icon: 'el-icon-s-claim',
            permission: {
                module_code: "",
                resource_code: "",
                operate_code: ""

            },
            accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
        },
        children: [{
                path: 'index',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'AsAssessIndex',
                meta: {
                    title: '首页',
                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            }, {
                path: 'record',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'AsAssessRecord',
                meta: {
                    title: '节能考核记录',
                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            }, {
                path: 'manager',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'AsAssessManager',
                meta: {
                    title: '节能考核管理',
                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            },
            {
                path: 'task',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'AsAssessTask',
                meta: {
                    title: '节能考核任务',
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            },
            {
                path: 'dualcontrol',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'EcAuditDualcontrol',
                meta: {
                    title: '双控目标',

                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            }
        ]
    },

    {
        path: '/dgdiagnosis',
        component: Layout,
        redirect: '/dgdiagnosis/index',
        alwaysShow: true, // will always show the root menu
        name: 'DgDiagnosis',
        meta: {
            title: '能源诊断',
            icon: 'el-icon-first-aid-kit',
            permission: {
                module_code: "",
                resource_code: "",
                operate_code: ""

            },
            accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
        },
        children: [{
                path: 'index',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'DgDiagnosisIndex',
                meta: {
                    title: '首页',
                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            },
            {
                path: 'task',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'DgDiagnosisTask',
                meta: {
                    title: '能源诊断任务',
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            },
            {
                path: 'list',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'DgDiagnosisList',
                meta: {
                    title: '能源诊断',

                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            },
            {
                path: 'project',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'DgDiagnosisProject',
                meta: {
                    title: '节能项目',
                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            }
        ]
    },


    {
        path: '/sysmanager',
        component: Layout,
        alwaysShow: true, // will always show the root menu
        name: 'SysManager',
        meta: {
            title: '系统管理',
            icon: 'el-icon-s-tools',
            permission: {
                module_code: "",
                resource_code: "",
                operate_code: ""

            },
            accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
        },
        children: [{
                path: 'basedata',
                component: () =>
                    import ('@/views/basedata/index'),
                name: 'SysManagerBaseData',
                meta: {
                    title: '数据字典',
                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            },
            {
                path: 'EnergyType',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'SysManagerEnergyType',
                meta: {
                    title: '能源类型',
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            },
            {
                path: 'enterprise',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'SysManagerEnterprise',
                meta: {
                    title: '企业资料管理',

                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            },
            {
                path: 'service_org',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'SysManagerServiceOrg',
                meta: {
                    title: '服务机构管理',
                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            }


            ,
            {
                path: 'mater_type',
                component: () =>
                    import ('@/views/icons/index'),
                name: 'SysManagerMaterType',
                meta: {
                    title: '仪表类型管理',
                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            }

            ,
            {
                path: 'roles',
                component: () =>
                    import ('@/views/sys_roles/RoleIndex'),
                name: 'SysManagerRoles',
                meta: {
                    title: '角色管理',
                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            }

            ,
            {
                path: 'account',
                component: () =>
                    import ('@/views/account/AccountIndex'),
                name: 'SysManagerAccount',
                meta: {
                    title: '账号管理',
                    noCache: true,
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    },
                    accounttype: [''] //admin:管理员,ent:用能企业,srg:服务机构,gov:政府机构,expert:专家
                }
            }
        ]
    },
    /** when your routing map is too long, you can split it into small modules **/
    /*componentsRouter,
    chartsRouter,
    nestedRouter,
    tableRouter,*/
    /*
        {
            path: '/example',
            component: Layout,
            redirect: '/example/list',
            name: 'Example',
            meta: {
                title: 'example',
                icon: 'el-icon-s-help',
                permission: {
                    module_code: "",
                    resource_code: "",
                    operate_code: ""

                }
            },
            children: [{
                    path: 'create',
                    component: () =>
                        import ('@/views/example/create'),
                    name: 'CreateArticle',
                    meta: {
                        title: 'createArticle',
                        icon: 'edit',
                        permission: {
                            module_code: "",
                            resource_code: "",
                            operate_code: ""

                        }
                    }
                },
                {
                    path: 'edit/:id(\\d+)',
                    component: () =>
                        import ('@/views/example/edit'),
                    name: 'EditArticle',
                    meta: {
                        title: 'editArticle',
                        noCache: true,
                        activeMenu: '/example/list',
                        permission: {
                            module_code: "",
                            resource_code: "",
                            operate_code: ""

                        }
                    },
                    hidden: true
                },
                {
                    path: 'list',
                    component: () =>
                        import ('@/views/example/list'),
                    name: 'ArticleList',
                    meta: {
                        title: 'articleList',
                        icon: 'list',
                        permission: {
                            module_code: "",
                            resource_code: "",
                            operate_code: ""

                        }
                    }
                }
            ]
        },

        {
            path: '/tab',
            component: Layout,
            children: [{
                path: 'index',
                component: () =>
                    import ('@/views/tab/index'),
                name: 'Tab',
                meta: {
                    title: 'tab',
                    icon: 'tab',
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    }
                }
            }]
        },

        {
            path: '/error',
            component: Layout,
            redirect: 'noRedirect',
            name: 'ErrorPages',
            meta: {
                title: 'errorPages',
                icon: '404'
            },
            children: [{
                    path: '401',
                    component: () =>
                        import ('@/views/error-page/401'),
                    name: 'Page401',
                    meta: {
                        title: 'page401',
                        noCache: true,
                        permission: {
                            module_code: "",
                            resource_code: "",
                            operate_code: ""

                        }
                    }
                },
                {
                    path: '404',
                    component: () =>
                        import ('@/views/error-page/404'),
                    name: 'Page404',
                    meta: {
                        title: 'page404',
                        noCache: true,
                        permission: {
                            module_code: "",
                            resource_code: "",
                            operate_code: ""

                        }
                    }
                }
            ]
        },

        {
            path: '/error-log',
            component: Layout,
            children: [{
                path: 'log',
                component: () =>
                    import ('@/views/error-log/index'),
                name: 'ErrorLog',
                meta: {
                    title: 'errorLog',
                    icon: 'bug',
                    permission: {
                        module_code: "",
                        resource_code: "",
                        operate_code: ""

                    }
                }
            }]
        },

        {
            path: '/excel',
            component: Layout,
            redirect: '/excel/export-excel',
            name: 'Excel',
            meta: {
                title: 'excel',
                icon: 'excel',
                permission: {
                    module_code: "",
                    resource_code: "",
                    operate_code: ""

                }
            },
            children: [{
                    path: 'export-excel',
                    component: () =>
                        import ('@/views/excel/export-excel'),
                    name: 'ExportExcel',
                    meta: {
                        title: 'exportExcel',
                        permission: {
                            module_code: "",
                            resource_code: "",
                            operate_code: ""

                        }
                    }
                },
                {
                    path: 'export-selected-excel',
                    component: () =>
                        import ('@/views/excel/select-excel'),
                    name: 'SelectExcel',
                    meta: {
                        title: 'selectExcel',
                        permission: {
                            module_code: "",
                            resource_code: "",
                            operate_code: ""

                        }
                    }
                },
                {
                    path: 'export-merge-header',
                    component: () =>
                        import ('@/views/excel/merge-header'),
                    name: 'MergeHeader',
                    meta: {
                        title: 'mergeHeader',
                        permission: {
                            module_code: "",
                            resource_code: "",
                            operate_code: ""

                        }
                    }
                },
                {
                    path: 'upload-excel',
                    component: () =>
                        import ('@/views/excel/upload-excel'),
                    name: 'UploadExcel',
                    meta: {
                        title: 'uploadExcel',
                        permission: {
                            module_code: "",
                            resource_code: "",
                            operate_code: ""

                        }
                    }
                }
            ]
        },

        {
            path: '/zip',
            component: Layout,
            redirect: '/zip/download',
            alwaysShow: true,
            name: 'Zip',
            meta: { title: 'zip', icon: 'zip' },
            children: [{
                path: 'download',
                component: () =>
                    import ('@/views/zip/index'),
                name: 'ExportZip',
                meta: { title: 'exportZip' }
            }]
        },

        {
            path: '/pdf',
            component: Layout,
            redirect: '/pdf/index',
            children: [{
                path: 'index',
                component: () =>
                    import ('@/views/pdf/index'),
                name: 'PDF',
                meta: { title: 'pdf', icon: 'pdf' }
            }]
        },
        {
            path: '/pdf/download',
            component: () =>
                import ('@/views/pdf/download'),
            hidden: true
        },

        {
            path: '/theme',
            component: Layout,
            children: [{
                path: 'index',
                component: () =>
                    import ('@/views/theme/index'),
                name: 'Theme',
                meta: { title: 'theme', icon: 'theme' }
            }]
        },

        {
            path: '/clipboard',
            component: Layout,
            children: [{
                path: 'index',
                component: () =>
                    import ('@/views/clipboard/index'),
                name: 'ClipboardDemo',
                meta: { title: 'clipboardDemo', icon: 'clipboard' }
            }]
        },

        {
            path: '/i18n',
            component: Layout,
            children: [{
                path: 'index',
                component: () =>
                    import ('@/views/i18n-demo/index'),
                name: 'I18n',
                meta: { title: 'i18n', icon: 'international' }
            }]
        },

        {
            path: 'external-link',
            component: Layout,
            children: [{
                path: 'https://github.com/PanJiaChen/vue-element-admin',
                meta: { title: 'externalLink', icon: 'link' }
            }]
        },
    */
    // 404 page must be placed at the end !!!
    { path: '*', redirect: '/404', hidden: true }
]

const createRouter = () => new Router({
    // mode: 'history', // require service support
    scrollBehavior: () => ({ y: 0 }),
    routes: constantRoutes
})

const router = createRouter()

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
    const newRouter = createRouter()
    router.matcher = newRouter.matcher // reset router
}

export default router